package cn.jxwazx.sheinspringboot.service;

import cn.jxwazx.sheinspringboot.entity.BaseNameValue;
import cn.jxwazx.sheinspringboot.entity.param.ProductBatchSaveOrUpdateParam;
import cn.jxwazx.sheinspringboot.entity.param.ProductPageParam;
import cn.jxwazx.sheinspringboot.entity.param.Top10Param;
import cn.jxwazx.sheinspringboot.entity.po.ProductList;
import cn.jxwazx.sheinspringboot.entity.vo.ActiveVo;
import cn.jxwazx.sheinspringboot.entity.vo.GMVVo;
import cn.jxwazx.sheinspringboot.entity.vo.Top10ProductVo;
import cn.jxwazx.sheinspringboot.entity.vo.Top10Vo;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Collection;
import java.util.List;

/**
 * @author LoveHuaHua
 * @date 2024年03月14日 11:33
 * @description believe in yourself
 */
public interface ProductListService extends IService<ProductList> {

    Collection<ProductList> selectBySkus(Collection<String> skus);


    /**
     * 批量保存或更新
     * @param params
     */
    void batchSaveOrUpdate(List<ProductBatchSaveOrUpdateParam> params);

    /**
     * 获取产品分类
     *
     * @return
     */
    List<BaseNameValue<String, String>> getTypeList(Integer type);

    /**
     * 导出文件
     * @param param
     * @return
     */
    String exportData(ProductPageParam param);

    /**
     * 获取一级类目GMV
     * @return
     */
    List<GMVVo> selectGMV();

    void fix();

    /**
     * 获取活跃信息
     * @return
     */
    List<ActiveVo> active();

    LambdaQueryChainWrapper<ProductList>  filterProduct(ProductPageParam param);

    /**
     * top10
     * @param param
     * @return
     */
    Page<Top10Vo> top10(Top10Param param);

    Page<Top10ProductVo> top10Product(Top10Param param);
}
